package fr.generali.accueilclient.gwt.rebind.place;

import java.util.Set;

import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JMethod;

interface PlaceHistoryGeneratorContext {

    /**
     * @return L'ensemle de Places retoruvées dans le source path.
     */
    Set<JClassType> getPlaceTypes() throws UnableToCompleteException;

    /**
     * Pour une place donnée, retourne son prefixe.
     */
    String getPrefix(JClassType placeType) throws UnableToCompleteException;

    /**
     * @return L'ensemble des prefixes.
     */
    Set<String> getPrefixes() throws UnableToCompleteException;

    JMethod getTokenizerGetter(String prefix) throws UnableToCompleteException;

    JClassType getTokenizerType(String prefix) throws UnableToCompleteException;

    /**
     * @return Le nom du package de la classe à générer.
     */
    String getPackageName();

    /**
     * @return Le nom de la classe à générer.
     */
    String getImplName();

    /**
     * @return L'interface que doit implémenter la classe générée.
     */
    JClassType getInterfaceType();

}
